package com.example.装饰器模式;

/**
 * 测试主类
 */
public class Main {

    public static void main(String[] args) {
        // 买一杯焦糖奶茶什么都不加
        MilkTea milkTea = new CaramelMilkTea();
        System.out.println("描述: " + milkTea.desc() + ", 价格: " + milkTea.cost());

        // 用布丁装饰奶茶
        MilkTea milkTea2 = new CaramelMilkTea();
        milkTea2 = new Pudding(milkTea2);
        System.out.println("描述: " + milkTea2.desc() + ", 价格: " + milkTea2.cost());

        // 我要一个双份布丁的奶茶, 再用一层布丁装饰奶茶
        MilkTea milkTea3 = new CaramelMilkTea();
        milkTea3 = new Pudding(new Pudding(milkTea3));
        System.out.println("描述: " + milkTea3.desc() + ", 价格: " + milkTea3.cost());

        // todo 如果以后再添加一个需求 每种奶茶有大杯, 中杯, 小杯需要加不同的钱, 只要新建一组杯子基类/ZI类, 重写描述和价格方法就可以了
    }
}
